package dao;

import dal.Conexion;
import dto.Producto;
import java.util.Vector;
import java.sql.ResultSet;


public class ProductoDaoPostgreSQL extends ProductoDao {

	@Override
	public void update() throws Exception {
		Conexion objConexion = Conexion.getOrCreate();

		if(objDto.getIidproducto() > 0){
			StringBuffer query = new StringBuffer("UPDATE producto SET ");
			query.append("snombreproducto = '" + objDto.getSnombreproducto() + "',");
			query.append("sprecio = '" + objDto.getSprecio() + "' ");
			query.append("WHERE iidproducto = '" + objDto.getIidproducto() + "'");
			int upd = objConexion.ejecutarSimple(query.toString());
			if(upd == 0)
				throw new Exception("El registro no pudo ser actualizado");
		}

		if(objDto.getIidproducto() == 0){
			StringBuffer query = new StringBuffer("INSERT INTO producto VALUES (");
			query.append("'" + objDto.getIidproducto() + "'," );
			query.append("'" + objDto.getSnombreproducto() + "'," );
			query.append("'" + objDto.getSprecio() + "' " );
			query.append(")");
			int id = objConexion.ejecutarInsert(query.toString());
			if(id == 0)
				throw new Exception("El registro no pudo ser insertado");
			else
				objDto.setIidproducto(id);
			objConexion.desconectar();
		}
	}
	@Override
	public void delete(){
		Conexion objConexion = Conexion.getOrCreate();
		StringBuffer query = new StringBuffer("DELETE FROM producto ");
		query.append("WHERE iidproducto = " + objDto.getIidproducto());
		objConexion.ejecutarSimple(query.toString());
		objConexion.desconectar();
	}

	@Override
	public Producto select(int id){
		try{
			Conexion objConexion = Conexion.getOrCreate();
			String query = "SELECT * FROM producto WHERE iidproducto = " + id;
			ResultSet objResultSet = objConexion.ejecutar(query);
			if(objResultSet.next()){
				Producto obj = new Producto();
				int _iidproducto = objResultSet.getInt("iidproducto");
				obj.setIidproducto(_iidproducto);
				
				String _snombreproducto = objResultSet.getString("snombreproducto");
				obj.setSnombreproducto(_snombreproducto);
				
				double _sprecio = objResultSet.getDouble("sprecio");
				obj.setSprecio(_sprecio);
				
				return obj;
			}
		}catch(Exception ex){
			;
		}
		return null;
	}

	@Override
	public Vector<Producto> selectTodos(){
		Vector<Producto>  registros = new Vector<Producto>();
		try{
			Conexion objConexion = Conexion.getOrCreate();
			String query = "SELECT * FROM producto ";
			ResultSet objResultSet = objConexion.ejecutar(query);
			while(objResultSet.next()){
				Producto obj = new Producto();
				int _iidproducto = objResultSet.getInt("iidproducto");
				obj.setIidproducto(_iidproducto);
				
				String _snombreproducto = objResultSet.getString("snombreproducto");
				obj.setSnombreproducto(_snombreproducto);
				
				double _sprecio = objResultSet.getDouble("sprecio");
				obj.setSprecio(_sprecio);
				
				registros.addElement(obj);
			}
		}catch(Exception ex){
			;
		}
		return registros;
	}

}

